/************************************************ 
* WKS GD32F470ZIT6核心板
* 电容触摸屏-GT1151 驱动代码		   
* 版本：V1.0								  
************************************************/	

#ifndef __GT1151Q_H
#define __GT1151Q_H	

#include "yz.h"
#include "yzl_softport.h"

/* 与电容触摸屏连接的芯片引脚(未包含IIC引脚) 
 * IO操作函数 
 */
#define GT_RST(x)    		 do{ x ? \
                             gpio_bit_write(GPIOB, GPIO_PIN_12, SET) : \
                             gpio_bit_write(GPIOB, GPIO_PIN_12, RESET); \
                         }while(0) 	    /* GT1151复位引脚 */

#define GT_INT    		   gpio_input_bit_get(GPIOD, GPIO_PIN_11)		/* GT1151中断引脚 */	
   	
 
/* IIC读写命令 */	
#define GT_CMD_WR 		0X28     	/* 写命令 */
#define GT_CMD_RD 		0X29		  /* 读命令 */
  
/* GT1151 部分寄存器定义 */ 
#define GT_CTRL_REG 	0X8040   	/* GT1151控制寄存器 */
#define GT_PID_REG 		0X8140   	/* GT1151产品ID寄存器 */

#define GT_GSTID_REG 	0X814E   	/* GT1151当前检测到的触摸情况 */
#define GT_TP1_REG 		0X8150  	/* 第一个触摸点数据地址 */
#define GT_TP2_REG 		0X8158		/* 第二个触摸点数据地址 */
#define GT_TP3_REG 		0X8160		/* 第三个触摸点数据地址 */
#define GT_TP4_REG 		0X8168		/* 第四个触摸点数据地址 */
#define GT_TP5_REG 		0X8170		/* 第五个触摸点数据地址 */

#define TP_PRES_DOWN    0x80
#define TP_CATH_PRES    0x40
#define CT_MAX_TOUCH    5

typedef struct
{
    uint8_t (*init)(void);
    uint8_t (*scan)(uint8_t);
    void (*adjust)(void);
    uint16_t x[CT_MAX_TOUCH];
    uint16_t y[CT_MAX_TOUCH];
    uint8_t sta;
    float xfac;
    float yfac;
    short xc;
    short yc;
    uint8_t touchtype;
}_m_tp_dev;
extern _m_tp_dev tp_dev;
uint8_t gt1151_wr_reg(uint16_t reg, uint8_t *buf, uint8_t len);  /* 向GT1151写入数据 */
void gt1151_rd_reg(uint16_t reg, uint8_t *buf, uint8_t len);     /* 从GT1151读取数据 */
uint8_t gt1151_init(void);               /* GT1151触摸屏初始化函数 */
uint8_t gt1151_scan(uint8_t mode);       /* 触摸屏扫描函数 */

#endif











